﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using Entidades;
using CapaDeGestion;


namespace Servicio
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {
        private Token tokenActual2;

        [WebMethod]
        public string CrearToken(int idMaquina)
        {
            string token;
            try
            {
                GestionMaquina gestionMaquina=new GestionMaquina();
                GestionApuesta gestionApuesta=new GestionApuesta();
                Token tok=new Token();

                if (gestionMaquina.MaquinaHabilitada(idMaquina))
                {
                    token= gestionApuesta.Token();
                    tok.IdToken = token;
                    tok.FechaInicio = DateTime.Now;
                    tok.FechaFin = tok.FechaInicio.AddMinutes(5);
                    gestionApuesta.InsertarToken(tok);
                   // token = "SDGFHJGFDSFGHJHGDFG";)
                    return token;
                }
                else
                {
                    token = "NO HABILITADA";
                    return token;
                }
                
            }
            catch (Exception exception)
            {
                token = "SE PRODUCJO UN ERROR EN EL SOLICITUD DE SERVICIO."+exception.StackTrace;
                return token;
            }
          
           
            
        }
        
        [WebMethod]
        public string Apostar(string token,List<ApuestaServicio> apuesta)
        {
                string status="";
                ApuestaServicio apuestaTotal = apuesta[0];
                GestionApuesta gestionApuesta=new GestionApuesta();
            try
            {
                Token tokenActual = gestionApuesta.SeleccionarToken(token);
                tokenActual2 = tokenActual;
                if (gestionApuesta.ValidarToken(tokenActual)<=5)
                {
                    try{
                        for (int i = 0; i < apuesta.Count; i++)
                        {
                            if (gestionApuesta.ExisteApuesta(apuesta[i].IdApuesta))
                            {
                                status = "Id de apuesta duplicado, verificar";
                                return status;
                            }
                        }

                        for (int i = 0; i < apuesta.Count; i++)
                        {
                            gestionApuesta.InsertarApuestaServicio(apuesta[i].IdApuesta,apuesta[i].IdMaquina, apuesta[i].IdHistorialEvento,
                                                                   apuesta[i].IdFactura/*, apuesta[i].FechaApuesta*/,apuesta[i].Posicion, apuesta[i].MontoApuesta);
                        }
                          
                        }catch(Exception exception)
                        {
                            status = "ERROR VERIFIQUE QUE LOS ID DE REFERENCIA ESTEN CORRECTOS"+exception.StackTrace;
                            return status;
                        }
                    status = "ACEPTADA";
                    return status;
                }
                else
                {
                    status = "NO ACEPTADA" + "tiempo transcurrido: " + gestionApuesta.ValidarToken(tokenActual)+"min";
                    return status;
                }

            }
            catch (Exception e)
            {
                status = "ERROR EN LA SOLICITUD DE SERVICIO" + e.StackTrace + gestionApuesta.ValidarToken(tokenActual2);
                return status;
            }
            
        
            
        }

       
    }
}